package com.dyna.demo.serial.service;

import cn.hutool.core.util.StrUtil;
import com.dyna.cp.mybatis.mapper.DemoMybatisMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class DemoSerialServiceImpl {

    @Resource
    private DemoMybatisMapper demoMybatisMapper;

    /**
     * 测试生成编码
     * 我的编号类型是ABC，但是这三个编号分别是A1，A2,A3，B1-1，B1-2，B1-3，C1-1-1，C1-1-2，C1-1-3
     * 问题痛点: 工作里生成编号的时候是没有办法排序找到最大的编号，是因为这种类型的编号没有办法排序，因此比较麻烦
     * 解决方法: 根据前缀找出该指标下的所有指标，但是排序并不是根据编号排序而是根据id排序，这样就没问题了。
     * @param serialNumPre 编号类型
     * @return Boolean
     */
    public Boolean create(String serialNumPre) {
        String maxNum = demoMybatisMapper.querySerialMaxNum(serialNumPre);
        if (StrUtil.isBlank(maxNum)) {
            if (serialNumPre.equals("A")) {
                return demoMybatisMapper.insert("A1");
            }else {
                return demoMybatisMapper.insert(serialNumPre+"1");
            }
        }
        int num;
        if (serialNumPre.equals("A")) {
            num = Integer.parseInt(maxNum.replace("A", ""));
        }else if (serialNumPre.startsWith("B")) {
            num = Integer.parseInt(maxNum.replace(serialNumPre, ""));
        }else {
            num = Integer.parseInt(maxNum.replace(serialNumPre, ""));
        }
        String newNum = String.valueOf(num + 1);
        String resultSerialNum = serialNumPre + newNum;
        return demoMybatisMapper.insert(resultSerialNum);
    }

}
